from __future__ import annotations

import re
import string

__all__ = ["summarize"]

_parenthetical = re.compile(r"\([^)]+?\)")
_punct_table = {ord(p): " " for p in string.punctuation if p not in "-'"}
_stops = {
	"i",
	"me",
	"my",
	"myself",
	"we",
	"our",
	"ours",
	"ourselves",
	"you",
	"your",
	"yours",
	"yourself",
	"yourselves",
	"he",
	"him",
	"his",
	"himself",
	"she",
	"her",
	"hers",
	"herself",
	"it",
	"its",
	"itself",
	"they",
	"them",
	"their",
	"theirs",
	"themselves",
	"what",
	"which",
	"who",
	"whom",
	"this",
	"that",
	"these",
	"those",
	"am",
	"is",
	"are",
	"was",
	"were",
	"be",
	"been",
	"being",
	"have",
	"has",
	"had",
	"having",
	"do",
	"does",
	"did",
	"doing",
	"a",
	"an",
	"the",
	"and",
	"but",
	"if",
	"or",
	"because",
	"as",
	"until",
	"while",
	"of",
	"at",
	"by",
	"for",
	"with",
	"about",
	"against",
	"between",
	"into",
	"through",
	"during",
	"before",
	"after",
	"above",
	"below",
	"to",
	"from",
	"up",
	"down",
	"in",
	"out",
	"on",
	"off",
	"over",
	"under",
	"again",
	"further",
	"then",
	"once",
	"here",
	"there",
	"when",
	"where",
	"why",
	"how",
	"all",
	"any",
	"both",
	"each",
	"few",
	"more",
	"most",
	"other",
	"some",
	"such",
	"no",
	"nor",
	"not",
	"only",
	"own",
	"same",
	"so",
	"than",
	"too",
	"very",
	"s",
	"t",
	"can",
	"will",
	"just",
	"don",
	"should",
	"now",
	"d",
	"ll",
	"m",
	"o",
	"re",
	"ve",
	"y",
	"ain",
	"aren",
	"couldn",
	"didn",
	"doesn",
	"hadn",
	"hasn",
	"haven",
	"isn",
	"ma",
	"mightn",
	"mustn",
	"needn",
	"shan",
	"shouldn",
	"wasn",
	"weren",
	"won",
	"wouldn",
}


def summarize(phrase: str) -> str:
	phrase = _parenthetical.sub("", phrase)
	phrase = phrase.translate(_punct_table)
	words = phrase.split()
	relevant_words = [word for word in words if word not in _stops]
	if not relevant_words:
		relevant_words = words
	return " ".join(relevant_words[:10])
